
package com.plian.system.service.pm.property;

import com.baomidou.mybatisplus.extension.service.IService;
import com.plian.system.entity.pm.property.PropertyBasics;
import com.plian.system.vo.pm.property.PropertyBasicsVO;
import com.plian.system.vo.pm.property.SmallPropertyBasicsVO;

import java.util.List;
import java.util.Map;

/**
 *  服务类
 *
 * @author jianglei
 * @since 2019-12-05
 */
public interface IPropertyBasicsService extends IService<PropertyBasics> {

    /**
     * 更新状态
     * @param ids
     * @param status
     */
     boolean updateStatus(List<String> ids, String status);

    /**
     * 初始化code
     */
    void initPropertyCode();

    /**
     * 单个产权信息 修改code
     * @param id
     * @param parentId
     */
    void changeNewPropertyCode(String id, String parentId);
    void changeNewPropertyCodeGzw(String id);

    /**
     * 初始化 是否与民资混改
     */
    void initIsPrivateMix();

    /**
     * 修改本级和下级 是否与民资混改
     * @param initialId
     * @param isPrivateMix
     */
    void changeChildPrivateMix(String initialId, Integer isPrivateMix);

    /**
     * >0 返回true
     * @param actualCapital
     * @return
     */
    boolean checkActualCapital5(String actualCapital);

    /**
     * 获取登录用户 所有子节点  包含出资企业
     * @return
     */
    List<SmallPropertyBasicsVO> getAllChildList();

    /**
     * 根据组织获取产权信息
     * @param orgId
     * @return
     */
    PropertyBasics findByOrgId(String orgId);

    /**
     * 根据组织id获取产权信息
     *
     * @param orgId
     * @return
     */
    PropertyBasicsVO findVOByOrgId(String orgId);

    /**
     * 获取所有下级单位 包含本级
     * @param id
     * @return
     */
    List<PropertyBasics> getAllChild(String id);

    /**
     * 根据组织id、时间获取 子企业
     *
     * @param orgId
     * @param bsDate
     * @return
     */
    List<PropertyBasics> getAllChildByOrgIdsAndTime(List<String> orgIds, String bsDate);

    /**
     * @Description:  市本级/全大市
     * @Author: Take-off
     * @Date: 11:31 AM 2023/3/17
     * @Param: []
     * @return: java.util.List<com.plian.system.entity.pm.property.PropertyBasics>
     **/
    List<PropertyBasics> getMunicipalProperty(boolean flag,String date);

    /**
     * @Description: //TODO 决策分析报告数据
     * @Author: Take-off
     * @Date: 8:50 AM 2023/3/22
     * @Param: [id, startDate, endDate]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String, Object> decisionReport(String id, String startDate, String endDate);

    /**
     * @Description:  产权名字模糊查询列表
     * @Author: Take-off
     * @Date: 11:05 AM 2023/5/23
     * @Param: [proName]
     * @return: java.util.List<com.plian.system.entity.pm.property.PropertyBasics>
     **/
    List<PropertyBasics> nameLikeList(String proName);
}
